/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package net.ieslaferreria.infoCiutat;



import java.util.Vector;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import org.garret.perst.Key;
import org.garret.perst.Storage;
import org.garret.perst.StorageFactory;

/** 
 * @author Administrador
 */
public class InfoCiutat extends MIDlet implements CommandListener, ItemStateListener {
   
    PuntManager pm =new PuntManagerImpl(); 
    
    Gestor g  = new GestorImpl();
    Punt pt;
    int idCont = 0, id=0;
    static Storage db;
    static DadesPersonals dp; 
    Root root;
    private Display pantalla;
    private Form pantallaInicial, frmDadesLloc, frmDadesContacte, frmModifCont,frmModifLloc ;
    private Form frmElimLloc, frmElimCont;
    private Form frmCarrerNum, frmCarrer, frmCruilla, frmPuntInt, frmContacte, frmDadesPersonals, frmDadesPersonalsModif, frmDadesPersonalsElim;
    private Form frmIntervalHorari, frmTempsMaxim;
    private List menu, menu2, menu3, menuLlistaEx, menu6, menu7, menuDP, listaMitjaPerCategoria, ListaPrioritzacio;
    private Command atras, salir, aceptar, adelante;  
    String opciones[]={"Temps", "Distància", "Despesa"};
    String opciones2[]={"Preferencia de Bus", "Preferencia de Tren", "Preferencia de Metro", "Preferencia de Bicing", "Preferencia de Taxi"};
    TextField txtNom, txtNomModif, txtNomElim, txtCarrerLloc, txtCarrerLlocModif, txtCarrerLlocElim;
    TextField txtNumCarrerLloc, txtNumCarrerLlocModif, txtNumCarrerLlocElim;
    TextField txtCodiLloc, txtCodiLlocElim;
    TextField txtNomContacte, txtNomContacteModif, txtNomContacteElim;
    TextField txtCodiContacte;
    TextField txtAdreçaContacte, txtAdreçaContacteModif, txtAdreçaElim;
    TextField txtTelefon, txtTelefonModif, txtTelefonElim;
    TextField txtBuscarCodiLloc, txtBuscarCodiCont, txtBuscarCodiLlocElim, txtBuscarCodiContElim;
    TextField txtCiutatCont, txtCiutatContModif, txtCiutatContElim;
    TextField[] txtCadena ;
    TextField txtCarrerNum,txtNum, txtCarrer, txtCarrer1, txtCarrer2, txtPuntInteres, txtContacte;
    TextField txtDPnom, txtDPcognom1, txtDPcognom2, txtDPtelefon, txtDPemail, txtDPdireccio;
    TextField txtDPnomModif, txtDPcognom1Modif, txtDPcognom2Modif, txtDPtelefonModif, txtDPemailModif, txtDPdireccioModif;
    TextField txtHoraInici, txtHoraFi, txtTempsMaxim;
    
    /*Creacion de la base de datos bd*/
    
    public InfoCiutat(){
       
        db = StorageFactory.getInstance().createStorage();
        
        db.open("bd");
        
        if(db.isOpened() == true){
            
            root = (Root)db.getRoot();
    
            if(root == null){
                root = new Root(db);
                db.setRoot(root);
                root.modify();
                db.commit();
            }
           
        }else{
          destroyApp(false);
        }
        
        dp = new DadesPersonalsImpl(db);
        
        if(root.dadesPersonals.get(new Key("jaja"))==null){
        dp.setEmail("jol");
        dp.setNomUsuari("jaja");
        dp.setTelefon(92312431);
        root.dadesPersonals.put(new Key(dp.getNomUsuari()), dp);
        dp.makePersistent(db);
        dp.store();
        db.commit();
        }else{
            System.out.println("Ya existeix");
        }
        pantalla= Display.getDisplay(this);
        
         
        /*Creo los botones*/
        
        atras = new Command ("Enrere", Command.BACK, 1);
        salir = new Command("Sortir", Command.EXIT, 1);
        aceptar = new Command("Acceptar", Command.OK, 1);
        adelante = new Command("Endavant", Command.OK, 1);
        
        
        
        /*CREO LOS TEXT FIELD*/
       
        txtCadena = new TextField[30];
        
        /*Nou lloc*/
        
        txtNom = new TextField("Nom:","", 10,TextField.PLAIN);
        
        
        txtCodiLloc = new TextField("Codi Lloc:", String.valueOf(idCont), 5, TextField.UNEDITABLE);
        
        txtCarrerLloc = new TextField("Carrer:", "", 20, TextField.PLAIN);
        
        txtNumCarrerLloc = new TextField("Numero carrer:", "", 5, TextField.NUMERIC);
        
        /*Nou contacte*/
        
        txtNomContacte = new TextField("Nom:", "", 10, TextField.PLAIN);
        
                
        txtCodiContacte = new TextField("Codi:", String.valueOf(idCont), 5, TextField.UNEDITABLE);
        
        
        txtAdreçaContacte = new TextField("Adreça:", "", 25, TextField.PLAIN);
        
        
        txtTelefon = new TextField("Telefon:", "", 10, TextField.NUMERIC);
        
        txtCiutatCont = new TextField("Ciutat:", "", 10, TextField.PLAIN);
        
        
       /*Modif lloc*/
        
        txtNomModif = new TextField("Nom:","", 10,TextField.PLAIN);
        
        txtBuscarCodiLloc= new TextField("Buscar Codi:", String.valueOf(idCont), 5, TextField.NUMERIC);
       
        txtCarrerLlocModif = new TextField("Carrer:", "", 20, TextField.PLAIN);
        
        txtNumCarrerLlocModif = new TextField("Numero carrer:", "", 5, TextField.NUMERIC);
         
        /* Modif contacte*/
        
        txtNomContacteModif = new TextField("Nom:", "", 10, TextField.PLAIN);
        
        
        txtAdreçaContacteModif = new TextField("Adreça:", "", 25, TextField.PLAIN);
        
        
        txtTelefonModif = new TextField("Telefon:", "", 10, TextField.NUMERIC);
        
        
        txtCiutatContModif = new TextField("Ciutat:", "", 10, TextField.PLAIN);
        
        
        txtBuscarCodiCont = new TextField("Buscar Codi:", String.valueOf(idCont), 5, TextField.NUMERIC);
        
        
        /*Elim lloc*/
        
        txtNomElim = new TextField("Nom:","", 10,TextField.UNEDITABLE);             
              
        txtBuscarCodiLlocElim= new TextField("Buscar Codi:", "", 5, TextField.NUMERIC);
        
        txtCarrerLlocElim = new TextField("Carrer:", "", 20, TextField.UNEDITABLE);
         
        txtNumCarrerLlocElim = new TextField("Numero carrer:", "", 5, TextField.UNEDITABLE);
        
        /*Elim contacte*/
        
        txtNomContacteElim = new TextField("Nom:", "", 10, TextField.UNEDITABLE);
        
        
        txtAdreçaElim = new TextField("Adreça:", "", 25, TextField.UNEDITABLE);
       
        
        txtTelefonElim = new TextField("Telefon:", "", 10, TextField.UNEDITABLE);
       
        
        txtCiutatContElim = new TextField("Ciutat:", "", 10, TextField.UNEDITABLE);
       
        
        txtBuscarCodiContElim = new TextField("Buscar Codi:", "", 5, TextField.NUMERIC);
        
        
        /*Creo textfield's de sel.leccionar origen i desti*/
        
        txtCarrerNum = new TextField("Carrer:", "", 20, TextField.PLAIN);
        txtNum = new TextField("Numero Carrer:", "", 20, TextField.NUMERIC);
        txtCarrer = new TextField("Carrer:", "", 20, TextField.PLAIN);
        txtCarrer1 = new TextField("Carrer 1:", "", 40, TextField.PLAIN);
        txtCarrer2 = new TextField("Carrer 2:", "", 40, TextField.PLAIN);
        txtPuntInteres = new TextField("Punt Interes:", "", 20, TextField.PLAIN);
        txtContacte = new TextField("Contacte:", "", 20, TextField.PLAIN);
        
        /*Creo TextField's DADES PERSONALS*/
        
        txtDPnom = new TextField("Nom:", "", 10, TextField.PLAIN);
        txtDPcognom1 = new TextField("Cognom 1:", "", 10, TextField.PLAIN);
        txtDPcognom2 = new TextField("Cognom 2:", "", 10, TextField.PLAIN);
        txtDPtelefon = new TextField("Telefon:", "", 12, TextField.PHONENUMBER);
        txtDPemail = new TextField("Email:", "", 30, TextField.EMAILADDR);
        txtDPdireccio = new TextField("Direcció:", "", 30, TextField.PLAIN);
        txtDPnomModif = new TextField("Nom:", "", 10, TextField.PLAIN);
        txtDPcognom1Modif = new TextField("Cognom 1:", "", 10, TextField.PLAIN);
        txtDPcognom2Modif = new TextField("Cognom 2:", "", 10, TextField.PLAIN);
        txtDPtelefonModif = new TextField("Telefon:", "", 12, TextField.PHONENUMBER);
        txtDPemailModif = new TextField("Email:", "", 30, TextField.EMAILADDR);
        txtDPdireccioModif = new TextField("Direcció:", "", 30, TextField.PLAIN);
                 
        /*Creo el textField de interval horari*/
        
        txtHoraInici = new TextField("Hora inici:", "", 5, TextField.PLAIN);
        txtHoraFi = new TextField("Hora fí:", "", 5, TextField.PLAIN);
        
        /*Creacion textfield temps maxim disposat a fer*/
        
        txtTempsMaxim = new TextField("Temps maxim desplaçament:", "", 5, TextField.PLAIN);
        
        /*Creo la pantalla Principal*/
         
        pantallaInicial=new Form("InfoCiutat"); 
        pantallaInicial.addCommand(salir);
        pantallaInicial.addCommand(adelante);
        pantallaInicial.setCommandListener(this);
        
        pantallaInicial.append("InfoCiutat es una aplicació que ens permet la cerca " +
                "de carrers, el manteniment de llocs prefixats i possar a punt una llista"+ 
                " de contactes per facilitarnos la cerca del lloc desitjat." 
                + "                                                                                                 "
                + "Pulsa Endavant per començar.");
        /*Creo el menu de la pantalla principal del midlet*/
        
        menu=new List("Menú", List.IMPLICIT);
        menu.insert(0,"5. Configuracio dades personals", null);
        menu.insert(0,"4. Importacio dades servidor extern", null);
        menu.insert(0,"3. Manteniment de Contactes", null);
        menu.insert(0,"2. Manteniment lloc prefixat", null);
        menu.insert(0,"1. Seleccionar origen i destí", null);
        
        
   
        
        
        /*Creo el menu de la 2ª pantalla*/
        
        menu2=new List("Origen i destí", List.IMPLICIT);
        menu2.insert(0,"1.6. Modificar parametres de cerca", null);
        menu2.insert(0,"1.5. Cerca per Contactes", null);
        menu2.insert(0,"1.4. Cerca per Punt d'Interes", null);
        menu2.insert(0,"1.3. Cerca per Cruïlla", null);
        menu2.insert(0,"1.2. Cerca per Carrer", null);
        menu2.insert(0,"1.1. Cerca per carrer i numero", null);
        
        /*Creo el menu de la 3ª pantalla*/
        
        menu3=new List("Modificar parametres de cerca", List.IMPLICIT);
        menu3.insert(0,"1.6.5. Selecció criteris avaluació dels itineraris", null);
        menu3.insert(0,"1.6.4. Descartar mitjà per categoria", null);
        menu3.insert(0,"1.6.3. Priorització mitjà de transport", null);
        menu3.insert(0,"1.6.2. Temps maxim desplaçament disposat a fer", null);
        menu3.insert(0,"1.6.1. Interval Horari", null);
        
         /*Creo el menu de la 4ª pantalla*/
        
        ListaPrioritzacio= new List("Priorització mitjà de transport", List.EXCLUSIVE, opciones2, null);
        
        
         /*Creo el menu de la 5ª pantalla*/
        
        menuLlistaEx= new List("Sel.lecció criteris avaluació dels itineraris", List.EXCLUSIVE, opciones, null);
                     
       
        /*Creo el menu de la 6ª pantalla*/
        
        menu6=new List("Manteniment lloc prefixat", List.IMPLICIT);
        menu6.insert(0,"2.3. Eliminar lloc prefixat", null);
        menu6.insert(0,"2.2. Modificar lloc prefixat", null);
        menu6.insert(0,"2.1. Nou lloc prefixat", null);
        
        
        /*Creo el menu de la 7ª pantalla*/
        
        menu7=new List("Manteniment de contactes", List.IMPLICIT);
        menu7.insert(0,"3.3. Eliminar contacte", null);
        menu7.insert(0,"3.2. Modificar contacte", null);
        menu7.insert(0,"3.1. Nou contacte", null);
        
        /*Creo el menu Dades Personals*/
        
        menuDP = new List("Configuracio dades Personals", List.IMPLICIT) ;
        menuDP.insert(0,"5.2. Modificar usuari", null);
        menuDP.insert(0,"5.1. Crear usuari", null);
        
        /*Creo Lista descartar mitja per categoria*/
        
        listaMitjaPerCategoria = new List("Descartar mitjà per categoria", List.MULTIPLE);
        listaMitjaPerCategoria.insert((listaMitjaPerCategoria.size()), "Metro", null);
        listaMitjaPerCategoria.insert((listaMitjaPerCategoria.size()), "Tren", null);
        listaMitjaPerCategoria.insert((listaMitjaPerCategoria.size()), "Bicing", null);
        listaMitjaPerCategoria.insert((listaMitjaPerCategoria.size()), "Taxi", null);
        listaMitjaPerCategoria.insert((listaMitjaPerCategoria.size()), "Bus", null);
     
        
        /*Creo el formulario de creacion de nuevo lugar de interes*/
        
        frmDadesLloc = new Form("Nou lloc prefixat");
        frmDadesLloc.append(txtCodiLloc);
        frmDadesLloc.append(txtNom);
        frmDadesLloc.append(txtCarrerLloc);
        frmDadesLloc.append(txtNumCarrerLloc);
        
       
        
        /*Creo el formulario de modificacion de lugar de interes*/
        
        frmModifLloc = new Form("Modificar lloc prefixat");
        frmModifLloc.append(txtBuscarCodiLloc);
        frmModifLloc.append(txtNomModif);
        frmModifLloc.append(txtCarrerLlocModif);
        frmModifLloc.append(txtNumCarrerLlocModif);
        
        
        /*Creo el formulario de eliminacion de lugar de interes*/
        
        frmElimLloc = new Form("Eliminar lloc prefixat");
        frmElimLloc.append(txtBuscarCodiLlocElim);
        frmElimLloc.append(txtNomElim);
        frmElimLloc.append(txtCarrerLlocElim);
        frmElimLloc.append(txtNumCarrerLlocElim);
        
         /*Creo el formulario de creacion de nuevo contacto*/
        
        frmDadesContacte = new Form("Nou contacte");
        frmDadesContacte.append(txtCodiContacte);
        frmDadesContacte.append(txtNomContacte);
        frmDadesContacte.append(txtAdreçaContacte);
        frmDadesContacte.append(txtTelefon);
        frmDadesContacte.append(txtCiutatCont);
        
        /*Creo el formulario de modificacio de contacte*/
                
        frmModifCont = new Form("Modificar contacte");
        frmModifCont.append(txtBuscarCodiCont);
        frmModifCont.append(txtNomContacteModif);
        frmModifCont.append(txtAdreçaContacteModif);
        frmModifCont.append(txtTelefonModif);
        frmModifCont.append(txtCiutatContModif);
        
        
                
        /*Creo el formulario de eliminacion de contacte*/
        
        frmElimCont = new Form("Eliminar contacte");
        frmElimCont.append(txtBuscarCodiContElim);
        frmElimCont.append(txtNomContacteElim);
        frmElimCont.append(txtAdreçaElim);
        frmElimCont.append(txtTelefonElim);
        frmElimCont.append(txtCiutatContElim);
        
        /*Creo formularios de busqueda de calle*/
        
       frmCarrerNum = new Form("Cerca per carrer i numero");
       frmCarrerNum.append(txtCarrerNum);
       frmCarrerNum.append(txtNum);
             
       frmCarrer  = new Form("Cerca per carrer");
       frmCarrer.append(txtCarrer);
      
       frmCruilla  = new Form("Cerca per cruïlla");
       frmCruilla.append(txtCarrer1);
       frmCruilla.append(txtCarrer2);
      
       frmPuntInt  = new Form("Cerca per punt d'interés");
       frmPuntInt.append(txtPuntInteres);
      
       frmContacte  = new Form("Cerca per contacte");
       frmContacte.append(txtContacte);
       
       /*Creo el formulario de creacion de nuevo usuario*/
       frmDadesPersonals= new Form("Crear Usuari");
       frmDadesPersonals.append(txtDPnom);
       frmDadesPersonals.append(txtDPcognom1);
       frmDadesPersonals.append(txtDPcognom2);
       frmDadesPersonals.append(txtDPtelefon);
       frmDadesPersonals.append(txtDPemail);
       frmDadesPersonals.append(txtDPdireccio);
       
       /*Creo el formulario de modificacion de usuario*/
       
       frmDadesPersonalsModif= new Form("Modificar usari");
       frmDadesPersonalsModif.append(txtDPnomModif);
       frmDadesPersonalsModif.append(txtDPcognom1Modif);
       frmDadesPersonalsModif.append(txtDPcognom2Modif);
       frmDadesPersonalsModif.append(txtDPtelefonModif);
       frmDadesPersonalsModif.append(txtDPemailModif);
       frmDadesPersonalsModif.append(txtDPdireccioModif);
       
              
       /*Creo el formulario de interva horari*/
       
       frmIntervalHorari = new Form("Interval Horari");
       frmIntervalHorari.append(txtHoraInici);
       frmIntervalHorari.append(txtHoraFi);
       
       /*Creo el formulario de temps maxom desplaçament*/
       
       frmTempsMaxim = new Form("Temps maxim desplaçament disposat a fer");
       frmTempsMaxim.append(txtTempsMaxim);
       
   
        /*Añado los botones a las pantallas*/
        
        menu.addCommand(salir);
        menu.addCommand(aceptar);
        menu2.addCommand(atras);
        menu2.addCommand(aceptar);
        menu3.addCommand(atras);
        menu3.addCommand(aceptar);
        ListaPrioritzacio.addCommand(atras);
        ListaPrioritzacio.addCommand(aceptar);
        menuLlistaEx.addCommand(atras);
        menuLlistaEx.addCommand(aceptar);
        menu6.addCommand(atras);
        menu6.addCommand(aceptar);
        menu7.addCommand(atras);
        menu7.addCommand(aceptar);
        menuDP.addCommand(atras);
        menuDP.addCommand(aceptar);
        frmDadesLloc.addCommand(atras);
        frmDadesLloc.addCommand(aceptar);
        frmDadesContacte.addCommand(atras);
        frmDadesContacte.addCommand(aceptar);
        frmModifLloc.addCommand(atras);
        frmModifLloc.addCommand(aceptar);
        frmModifCont.addCommand(atras);
        frmModifCont.addCommand(aceptar);
        frmElimCont.addCommand(atras);
        frmElimCont.addCommand(aceptar);
        frmElimLloc.addCommand(atras);
        frmElimLloc.addCommand(aceptar);
        frmCarrerNum.addCommand(atras);
        frmCarrerNum.addCommand(aceptar);        
        frmCarrer.addCommand(atras);
        frmCarrer.addCommand(aceptar);
        frmCruilla.addCommand(atras);
        frmCruilla.addCommand(aceptar);
        frmPuntInt .addCommand(atras);
        frmPuntInt .addCommand(aceptar);
        frmContacte.addCommand(atras);
        frmContacte.addCommand(aceptar);
        frmDadesPersonals.addCommand(atras);
        frmDadesPersonals.addCommand(aceptar);    
        frmDadesPersonalsModif.addCommand(atras);
        frmDadesPersonalsModif.addCommand(aceptar);          
        frmIntervalHorari.addCommand(atras);   
        frmIntervalHorari.addCommand(aceptar); 
        frmTempsMaxim.addCommand(atras);
        frmTempsMaxim.addCommand(aceptar);
        listaMitjaPerCategoria.addCommand(atras);
        listaMitjaPerCategoria.addCommand(aceptar);
        
        /*Creo los listeners de las pantallas*/
        
        menu.setCommandListener(this);
        menu2.setCommandListener(this);
        menu3.setCommandListener(this);
        ListaPrioritzacio.setCommandListener(this);
        menuLlistaEx.setCommandListener(this);
        menu6.setCommandListener(this);
        menu7.setCommandListener(this);
        menuDP.setCommandListener(this);
        frmDadesLloc.setCommandListener(this);
        frmDadesContacte.setCommandListener(this);
        frmModifLloc.setCommandListener(this);
        frmModifCont.setCommandListener(this);
        frmElimLloc.setCommandListener(this);
        frmElimCont.setCommandListener(this);
        frmModifLloc.setItemStateListener(this);
        frmModifCont.setItemStateListener(this);
        frmElimLloc.setItemStateListener(this);
        frmElimCont.setItemStateListener(this);
        frmCarrerNum.setCommandListener(this);
        frmCarrer.setCommandListener(this);
        frmCruilla.setCommandListener(this);
        frmPuntInt.setCommandListener(this);
        frmContacte.setCommandListener(this);
        frmDadesPersonals.setCommandListener(this);
        frmDadesPersonalsModif.setCommandListener(this);
        frmDadesPersonalsModif.setItemStateListener(this);
        frmIntervalHorari.setCommandListener(this);
        frmTempsMaxim.setCommandListener(this);
        listaMitjaPerCategoria.setCommandListener(this);
    }
    
    public void startApp() {
        
        pantalla.setCurrent(pantallaInicial);
    }
    
    

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
        
        
    }

    public void commandAction(Command cmd, Displayable dis) {
        if(cmd == salir){
            
            destroyApp(false);
            notifyDestroyed();
            
        }else if ( menu.isShown()){
            
                switch(menu.getSelectedIndex()){
                     case 0:{ 
                        pantalla.setCurrent(menu2);
                     break;
                    }                              
                     case 1:{ 
                        pantalla.setCurrent(menu6); 
                     break;
                    }
                     case 2:{
                        pantalla.setCurrent(menu7);
                     break;
                     }
                    case 4:{
                         pantalla.setCurrent(menuDP);
                    }
                }
            
        }else if ( menu2.isShown()){
               if(cmd==atras){
                   pantalla.setCurrent(menu);
              }else if(cmd == aceptar){
                  
                     switch(menu2.getSelectedIndex()){
                          case 0:{
                              pantalla.setCurrent(frmCarrerNum);
                          break;
                          }
                          case 1:{
                                pantalla.setCurrent(frmCarrer);
                          break;
                          }
                         case 2:{
                                 pantalla.setCurrent(frmCruilla);
                          break;       
                         }
                         case 3:{
                                 pantalla.setCurrent(frmPuntInt);
                         break;
                         }
                         case 4:{
                                 pantalla.setCurrent(frmContacte);
                          break;       
                         }
                          case 5:{
                              pantalla.setCurrent(menu3);
                          
                          
                          }
                      }
              }
                    
        }else if (frmCarrerNum.isShown()){
            if(cmd==atras){
                pantalla.setCurrent(menu2);
                
            }else if(cmd==aceptar){
                
                g.cercaRutaCarrer(txtCarrerNum.getString(), Integer.parseInt(txtNum.getString()));
            }
            
        }else if (frmCarrer.isShown()){
            if(cmd==atras){
                pantalla.setCurrent(menu2);
                
            }else if(cmd==aceptar){
                
                g.cercaRutaCarrer(String.valueOf(txtCarrer));
                
                
            }
                           
        }else if (frmCruilla.isShown()){
            if(cmd==atras){
                pantalla.setCurrent(menu2);
                
            }else if(cmd==aceptar){
               
                g.cercaRutaCruilla(String.valueOf(txtCarrer1), String.valueOf(txtCarrer2)); 
                
            }  
        }else if (frmPuntInt.isShown()){
            if(cmd==atras){
                pantalla.setCurrent(menu2);
                
            }else if(cmd==aceptar){
                
                g.cercaRutaPuntInteres(String.valueOf(txtPuntInteres));
                
                
            }  
        }else if (frmContacte.isShown()){
            if(cmd==atras){
                pantalla.setCurrent(menu2);
                
            }else if(cmd==aceptar){
                
                g.cercaRutaContacte(String.valueOf(txtNomContacte));
                
                
            }  
            
        }else if ( menu3.isShown()){
               if(cmd==atras){
                   pantalla.setCurrent(menu2);
              }else if(cmd == aceptar){
                   
                   switch(menu3.getSelectedIndex()){
                       
                       case 0: {
                              pantalla.setCurrent(frmIntervalHorari);
                       break;      
                       }   
                       case 1: {
                              pantalla.setCurrent(frmTempsMaxim);
                       break;       
                       }
                       case 2:{
                              pantalla.setCurrent(ListaPrioritzacio);
                       break;
                       }   
                       case 3: {
                              pantalla.setCurrent(listaMitjaPerCategoria);
                       break;       
                       }
                         
                       case 4:{
                              pantalla.setCurrent(menuLlistaEx);
                       }
                   } 
                  
                }
         
        }else if(frmIntervalHorari.isShown()){
            if(cmd == atras){
                pantalla.setCurrent(menu3);
            }
            
        }else if(frmTempsMaxim.isShown()){
            if(cmd == atras){
                pantalla.setCurrent(menu3);
            }
         
        }else if(listaMitjaPerCategoria.isShown()){
            if(cmd == atras){
                pantalla.setCurrent(menu3);
            }
            
        }else if(ListaPrioritzacio.isShown()){
              if(cmd == atras){
                pantalla.setCurrent(menu3);
            }
        }else if(menuLlistaEx.isShown()){
              if(cmd == atras){
                  pantalla.setCurrent(menu3);
              }
            
         }else if( menu6.isShown()){
              if(cmd == atras){
                    pantalla.setCurrent(menu);
                    
              }else if ( cmd == aceptar){
                                                
                     switch(menu6.getSelectedIndex()){
                    
                               case 0:{
                                    pantalla.setCurrent(frmDadesLloc);
                                    txtNom.setString("");
                                    txtCarrerLloc.setString("");
                                    txtNumCarrerLloc.setString("");
                               break;
                               } 
                               case 1:{
                                     pantalla.setCurrent(frmModifLloc);
                                     txtNomModif.setString("");
                                     txtCarrerLlocModif.setString("");
                                     txtNumCarrerLlocModif.setString("");
                              break;
                              }
                              case 2:{
                                     pantalla.setCurrent(frmElimLloc);
                                     txtNomElim.setString("");
                                     txtCarrerLlocElim.setString("");
                                     txtNumCarrerLlocElim.setString("");
                              }                         
                       }                          
              }           
             
         }else if(frmDadesLloc.isShown()){
             if (cmd == atras){
                 pantalla.setCurrent(menu6);
             }else if(cmd == aceptar){
                               
                 txtCadena[0] = txtCodiLloc;
                 txtCadena[1] = txtNom;
                 txtCadena[2] = txtCarrerLloc;
                 txtCadena[3] = txtNumCarrerLloc;
                 
                 
                 afegirDadesPerst(txtCadena);
                 pantalla.setCurrent(menu6);
             }
         }else if(frmModifLloc.isShown()){
              if(cmd == atras){
                 pantalla.setCurrent(menu6);
                 
              }else if(cmd == aceptar){
                 id = Integer.parseInt(txtBuscarCodiLloc.getString());   
                     this.pt = obtenirDadesPerst(id);
                     
                      txtCadena[8] = txtBuscarCodiLloc;
                      txtCadena[7] = txtNomModif;
                     
                      afegirDadesPerst(txtCadena);
                      pantalla.setCurrent(menu6);
                    
              }
         
         } else if(frmElimLloc.isShown()){
             if (cmd == atras){
                 pantalla.setCurrent(menu6);
                 
                 
            /* }else if(cmd == aceptar){
                     id = Integer.parseInt(txtBuscarCodiContElim.getString());   
                     this.pt = obtenirDadesPerst(id);
                 -- poner funcion que elimina un punto*/
             }
         }else if(menu7.isShown()){
             if(cmd == atras){
                 pantalla.setCurrent(menu);
             }else if(cmd == aceptar){
                 
                   switch(menu7.getSelectedIndex()){
                       
                       case 0:{
                           pantalla.setCurrent(frmDadesContacte);
                           txtNomContacte.setString("");
                           txtAdreçaContacte.setString("");
                           txtTelefon.setString("");
                           txtCiutatCont.setString("");
                       break;
                       }
                       case 1:{
                           pantalla.setCurrent(frmModifCont);
                           txtBuscarCodiCont.setString("");
                           txtNomContacteModif.setString("");
                           txtAdreçaContacteModif.setString("");
                           txtTelefonModif.setString("");
                           txtCiutatContModif.setString("");
                       break;
                       
                       }
                       case 2:{
                           pantalla.setCurrent(frmElimCont);
                           txtBuscarCodiContElim.setString("");
                           txtNomContacteElim.setString("");
                           txtAdreçaElim.setString("");
                           txtTelefonElim.setString("");
                           txtCiutatContElim.setString("");
                       }
                   }
                 
             }
             
        }else if(frmDadesContacte.isShown()){
            if(cmd == atras){
                pantalla.setCurrent(menu7);
            }else if(cmd == aceptar){
                txtCadena[3] = txtCodiContacte;
                txtCadena[2] = txtNomContacte;
                txtCadena[4] = txtAdreçaContacte;
                txtCadena[5] = txtTelefon;
                txtCadena[6] = txtCiutatCont;
                
                afegirDadesPerst(txtCadena);
                pantalla.setCurrent(menu7);
            }
        
        }else if(frmModifCont.isShown()){
            if(cmd == atras){
                pantalla.setCurrent(menu7);
            }else if(cmd == aceptar){
                id = Integer.parseInt(txtBuscarCodiCont.getString());   
                     this.pt = obtenirDadesPerst(id);
                     
                     
                     txtCadena[9]  = txtNomContacteModif;
                     txtCadena[10] = txtAdreçaContacteModif;
                     txtCadena[11] = txtTelefonModif;
                     txtCadena[12] = txtCiutatContModif;
                     
                     afegirDadesPerst(txtCadena);
                     pantalla.setCurrent(menu7);
            }
        
        }else if(frmElimCont.isShown()){
            if(cmd == atras){
                pantalla.setCurrent(menu7);
                
            /*}else if(cmd == aceptar){
                id = Integer.parseInt(txtBuscarCodiContElim.getString());   
                     this.pt = obtenirDadesPerst(id);
                     
                     --poner funcion que elimine un punto*/
            }
        } else if(menuDP.isShown())    {
            if(cmd == atras){
                pantalla.setCurrent(menu);
            }else if(cmd == aceptar){
                
                     switch(menuDP.getSelectedIndex()){
                         
                         case 0:{
                             pantalla.setCurrent(frmDadesPersonals);
                         break;
                         }
                         case 1: {
                             pantalla.setCurrent(frmDadesPersonalsModif);
                         break;
                         }
                         case 2: {
                             
                             pantalla.setCurrent(frmDadesPersonalsElim);
                             
                         }
                     }
                
            }
        }else if(frmDadesPersonals.isShown())    {
            if(cmd == atras){
                pantalla.setCurrent(menuDP);
            }else if(cmd == aceptar){
                afegirDadesPerst(txtCadena);
                pantalla.setCurrent(menuDP);
               
            }
        }else if(frmDadesPersonalsModif.isShown())    {
            if(cmd == atras){
                pantalla.setCurrent(menuDP);
            }else if(cmd == aceptar){
                afegirDadesPerst(txtCadena);
                pantalla.setCurrent(menuDP);
            }
         
                        
             
        }else if(cmd==adelante){
            
              pantalla.setCurrent(menu);
        }
    } 
     
    public void afegirDadesPerst( TextField[] tf ){
        
       Vector v = new Vector();            
       Punt p = new PuntImpl(InfoCiutat.db);
       v.addElement(tf[0].getString());
       v.addElement(tf[1].getString());
       v.addElement(tf[2].getString());
       v.addElement(tf[3].getString());
       
       int i = Integer.parseInt(txtBuscarCodiLloc.getString());
       if(root.idPunt.get(new Key(i)) == null){
           p.setCodi(this.idCont++);
       }else{
           root.idPunt.remove(new Key(p.getCodi()));
           root.nomPunt.remove(new Key(p.getNom()));
           p.setCodi(Integer.parseInt(txtBuscarCodiLloc.getString()));
       }
    
       
       root.idPunt.put(new Key(p.getCodi()), p);
       
       p.makePersistent(db);
       p.modify();
  
       InfoCiutat.db.commit();
   
    
}    
 public Punt obtenirDadesPerst(int idPunt){
      
       Punt p  = (Punt)root.idPunt.get(new Key(idPunt) );
       
       return p;
       
  }
    public void itemStateChanged(Item item) {
        if(item == txtBuscarCodiLloc){
             int i = Integer.parseInt(txtBuscarCodiLloc.getString());
             
             Punt p = obtenirDadesPerst(i);
             txtNomModif.setString(p.getNom());
             
        }else if( item == txtBuscarCodiCont){
            int i = Integer.parseInt(txtBuscarCodiCont.getString());
            
            Punt p = obtenirDadesPerst(i);
            
            txtNomContacteModif.setString(p.getNom());
            /*txtAdreçaContacteModif.setString();
            txtTelefonModif.setString();*/
            txtCiutatContModif.setString(p.getCiutat());
           
        }
    } 

  }


